package fifteenth.取得类的结构;

import java.lang.reflect.Constructor;

public class 取得一个类的全部构造方法之手拼信息 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> c =Class.forName("fifteenth.取得类的结构.Person");
        Constructor<?>[] cons = c.getConstructors();
        for (int i = 0; i < cons.length ; i++) {
            Class<?>[] paramTypes = cons[i].getParameterTypes();
            System.out.print("构造方法：");//获取修饰符
            System.out.print(cons[i].getModifiers());
            System.out.print(cons[i].getName());
            System.out.print("(");
            for (int j = 0; j <paramTypes.length ; j++) {
                System.out.print(paramTypes[j].getName()+" arg"+i);
                if(j<paramTypes.length-1){
                    System.out.print(",");
                }
            }
            System.out.println("){}");
        }
    }
}
/**
 * 程序中取得其权限的时候返回的是一个数字 而不是public，这是因为在整个Java中对于方法的修饰符是使用一定的数字表示出来的，
 * 如果想要把这个数字转换成用户可以看懂的关键字，则必须依靠Modifier类完成，这个类定义在java.lang.reflect包中
 * 直接使用MOdifier类中的以下方法即可将修饰符还原
 */
/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=55500:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 fifteenth.取得类的结构.取得一个类的全部构造方法之手拼信息
构造方法：1fifteenth.取得类的结构.Person(){}
构造方法：1fifteenth.取得类的结构.Person(java.lang.String arg1,int arg1){}

Process finished with exit code 0

 */